Engineers use compression (also called source coding or source encoding) to reduce the bitrate of digital video. Compression decreases the cost of storing and transmitting video information by converting the information into a lower bitrate form. Decompression (also called decoding) reconstructs a version of the original information from the compressed form. A “codec” is an encoder/decoder system.
Over the last two decades, various video codec standards have been adopted, including the H.261, H.262 (MPEG-2) and H.263 standards and the MPEG-1 and MPEG-4 standards. More recently, the H.264 standard (sometimes referred to as AVC or 14496-10) and VC-1 standard have been adopted. Next generation standard of HEVC is in development. For additional details, see representative versions of the respective standards. A video codec standard typically defines options for the syntax of an encoded video bitstream, detailing parameters that are in the bitstream for a video sequence when particular features are used in encoding and decoding. In many cases, a video codec standard also provides details about the decoding operations a decoder can perform to achieve correct results in decoding.
For modern decoding, a graphics processing unit (GPU) can be used. A GPU is a specialized electronic circuit designed to rapidly manipulate and alter memory in such a way so as to accelerate the building of images in a frame buffer intended for output to a display. GPUs are used in embedded systems, mobile phones, personal computers, workstations, game consoles, etc. Modern GPUs are very efficient at manipulating computer graphics, and their highly parallel structure makes them more effective than general-purpose CPUs for algorithms where processing of large blocks of data is done in parallel.
Although fast, most GPUs are not designed to handle videos encoded with Arbitrary Slice Order (ASO) and/or Flexible Macro-block Order (FMO). Video encoded using such algorithms is typically processed using a decoder designed to handle baseline profiles, like a CPU. Instead, GPUs are generally designed to handle a video sequence having a main profile and higher profiles. Unfortunately, many H.264/AVC encoders produce baseline bitstreams, which are actually conformant to main profile, but have a constraint flag incorrectly set. This incorrectly set flag makes H.264/AVC decoders treat those clips as pure baseline including ASO or FMO, even though such algorithms may not have been used.